﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace 期末复习
{
    public partial class frm_StudentSearch : Form
    {

        private DataTable CourseTable;
        public frm_StudentSearch()
        {
            InitializeComponent();
            this.dataGridView1.AllowUserToAddRows=false;
            this.dataGridView1.RowHeadersVisible=false;
            this.dataGridView1.BackgroundColor = Color.White;
            this.dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells;
        }

        //根据拼音搜索
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            DataRow[] searchResultRows =
            this.CourseTable.Select($"Pinyin LIKE '%{this.textBox1.Text.Trim()}%'");					//借助本窗体的课程数据表的方法Select，并提供与SQL类似的谓词表达式作为查询条件，根据拼音缩写进行模糊查询（仅支持%通配符）；查询将返回数据行数组；
            DataTable searchResultTable = this.CourseTable.Clone();                                         //借助本窗体的课程数据表的方法Clone，创建相同架构的空表，用于保存搜索结果所在数据行；
            foreach (DataRow row in searchResultRows)                                                       //遍历搜索结果所在数据行数组；
            {
                searchResultTable.ImportRow(row);                                                           //数据行导入数据表；
            }
            this.dataGridView1.DataSource = searchResultTable;
        }
        //点击载入
        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();
            sqlConnection.ConnectionString = "Server=(local);Database=qimo;Integrated Security=sspi";
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandText = "select * from tb_Course;";
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器；
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令；
            sqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;                            //设置SQL数据适配器在缺少架构时的动作为追加主键，从而获取数据库中定义的主键，否则无法根据编号搜索课程；
            this.CourseTable = new DataTable();                                                             //实例化本窗体的课程数据表，用于保存所有课程，以用作数据网格视图数据源；
            sqlConnection.Open();                                                                           //打开SQL连接；
            sqlDataAdapter.Fill(this.CourseTable);                                                          //SQL数据适配器读取数据，并填充课程数据表；
            sqlConnection.Close();
            this.dataGridView1.Columns.Clear();                                                                //数据网格视图的列集合清空；
            this.dataGridView1.DataSource = this.CourseTable;                                                  //将数据网格视图的数据源设为学生数据表；
            this.dataGridView1.Columns["No"].HeaderText = "编号";                                              //将数据网格视图的指定列的表头文本设为中文；
            this.dataGridView1.Columns["Name"].HeaderText = "名称";
            this.dataGridView1.Columns["Pinyin"].Visible = false;
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void frm_StudentSearch_Load(object sender, EventArgs e)
        {

        }
    }
}
